﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TISModel;
using BTO;

namespace DAL
{
    public class DALLocal
    {
        public List<BTO.Local> list()
        {
            //Pesquisa dados
            var locaisEntities = new TISModel.TISEntities();

            //cria modelos e add na lista para retornar
            var locais = (from c in locaisEntities.Local
                            select new BTO.Local
                            {
                                IDLocal = c.IDLocal,
                                pais = c.pais,
                                nome = c.nome

                            }).ToList();

            return locais;
        }

        public BTO.Local getByID(int id)
        {
            //Pesquisa dados e cria modelo para retornar
            var locaisEntities = new TISModel.TISEntities();
            var local = (from c in locaisEntities.Local
                           where c.IDLocal == id
                           select new BTO.Local
                           {
                               IDLocal = c.IDLocal,
                               pais = c.pais,
                               nome = c.nome

                           }).FirstOrDefault();

            return local;

        }

        public List<BTO.Local> getByPais(String pais)
        {
            //Pesquisa dados e cria modelo para retornar
            var locaisEntities = new TISModel.TISEntities();
            var locais = (from c in locaisEntities.Local
                           where c.pais == pais
                           select new BTO.Local
                           {
                               IDLocal = c.IDLocal,
                               pais = c.pais,
                               nome = c.nome

                           }).ToList();

            return locais;
        }

        public void insert(BTO.Local toInsert)
        {
            try
            {
                //cria um entity model e guarda
                var localEntities = new TISModel.TISEntities();

                TISModel.Local local = new TISModel.Local();
                local.pais = toInsert.pais;
                local.nome = toInsert.nome;
                
                localEntities.AddToLocal(local);
                localEntities.SaveChanges();

            }
            catch (Exception)
            {
                throw new System.Exception("Não foi possível inserir a local!");
            }
        }

        public void update(BTO.Local toUpdate)
        {
            var localEntities = new TISModel.TISEntities();
            var local = (from c in localEntities.Local where c.IDLocal == toUpdate.IDLocal select c).FirstOrDefault();

            if (local != null)
            {
                try
                {
                    local.pais = toUpdate.pais;
                    local.nome = toUpdate.nome;

                    localEntities.SaveChanges();
                }
                catch (Exception)
                {
                    throw new System.Exception("Não foi possível actualizar o local!");
                }
            }
            else {
                throw new System.Exception("Local não encontrada!");
            }
        }

        public void delete(int id)
        {
            var localEntities = new TISModel.TISEntities();
            var local = (from c in localEntities.Local where c.IDLocal == id select c).FirstOrDefault();

            if (local != null)
            {
                try
                {
                    localEntities.DeleteObject(local);
                    localEntities.SaveChanges();
                }
                catch (Exception)
                {
                    throw new System.Exception("Não foi Possível remover o local!");
                }
            }
            else
            {
                throw new System.Exception("Local não encontrado!");
            }

        }
    }
}
